package model;

import controller.InvalidCircuitException;
import controller.UnstableCircuitException;

/**
 * Composite elem I/O portját reprezentáló osztály. Input és out kivezetésekor csak ezek játszanak szerepet
 * @author radioactivebee
 *
 */
public class CompositePort implements BuildingBlock {

	private Input input;
	private Output output;
	private String name;

	public CompositePort(String name) {
		this.input = new Input(0);
		this.output = new Output(0);
		this.name = name;
	}

	@Override
	public String getName() {
		return name;
	}

	@Override
	public Boolean processSignal() throws UnstableCircuitException,
			InvalidCircuitException {
		Boolean oldstate = output.getState();
		output.setState(input.getState());
		if (output.getState() != oldstate){
			return true;
		} else {
			return false;
		}
	}

	@Override
	public Boolean validate() {
		// Mindig valid, mert logikában nem játszik szerepet
		return true;
	}

	public Input getInput() {
		return input;
	}

	public void setInput(Input input) {
		this.input = input;
	}

	public Output getOutput() {
		return output;
	}

	public void setOutput(Output output) {
		this.output = output;
	}

}
